//如果暴力, 算法时间复杂度是 nlogn*m => 百万*万 = 100亿, 超时是避免不了的了
//测试下, 看是否可以使用二分查找法, 也就是最小值到 最大值+m
// 在这个范围找个数据, 如果最小值加到这个段位, 需要的数 < m 这可能是一个值, 如果大于就算了
// 然后拿到这个临界值, 进行下一步的分析, 也就是按暴力运算的那种操作进行 这样先找到临界值, 再进行暴力
//完美时, 时间复杂度是: 10 * 10的6次 => 千万级别 再加点小暴力
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let n,m;
let initArr = [];

rl.on("line", (line)=>{
    if(n === undefined) {
        [n, m] = line.trim().split(" ").map(Number);
    } else if (initArr.length === 0) {
        initArr = line.trim().split(" ").map(Number);
        const result = getResult(n, m, initArr)
        console.log(result)
        // 清理
        n = m = undefined;
        initArr.length = 0;
    }
})

/**
 *
 * @param n {number} 木板长度
 * @param m {number} 木料长度
 * @param initArr {[number]} 木板长度数据
 * @return {number}  最短木板长
 */
function getResult(n, m, initArr) {
    initArr.sort((a, b) => a - b);
    let min =  initArr[0];
    let max = initArr[initArr.length - 1] + m;
    if(m === 0) return min; // 提前截断

    let currentMid;
    while(min <= max) {
        let mid = Math.floor((min + max)/2);
        if(valid(mid, initArr, m)) {
            min = mid + 1;
            currentMid = mid;
        } else {
            max = mid - 1
        }
    }

    // 现在拿到的中值, 是一个可能值
  if(currentMid) {
      for (let i = 0; i < initArr.length; i++) {
          if(currentMid - initArr[i] > 0) {
              m -= currentMid - initArr[i]
              initArr[i] = currentMid
          }  else {
              break
          }
      }
  }

  if(m === 0) {
      return currentMid
  } else {
      while(m) {
         initArr.sort((a, b) => a - b);
          initArr[0] ++
          m--
      }
     initArr.sort((a, b) => a - b);
      return initArr[0]
  }

    function valid(mid, initArr, m) {
        let count = 0;
        for (const num of initArr) {
            if(mid - num >=0) {
                count += mid - num
            } else {
                break;
            }
        }
        return count <= m;
    }
}
